//
//  HMNavigationController.swift
//  VVeibo21
//
//  Created by Apple on 16/10/22.
//  Copyright © 2016年 Apple. All rights reserved.
//

import UIKit

class HMNavigationController: UINavigationController, UIGestureRecognizerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        /*
            - 当程序员自定义导航的返回按钮后 屏幕左侧边缘右滑动的时候失效
         */
        // 解决办法
        interactivePopGestureRecognizer?.delegate = self
    }
    
    @objc private func backClick(){
        popViewController(animated: true)
    }
    
    /*
        - 当我们第一次 push 新控制器上 title 显示的为 (首页, 消息, 发现 ,我)的 title 以后显示的均是返回
     */
    // 重写父类的 push 方法
    override func pushViewController(_ viewController: UIViewController, animated: Bool) {
        var title: String
        // 由于消息 发现 我 均有返回按钮 = bug
        if childViewControllers.count > 0 {
            title = "返回"
            // 如果是第一次 push
            if childViewControllers.count == 1 {
                // 等于首页的 title
                title = childViewControllers.first?.title ?? ""
            }
            // 设置导航左侧按钮
            viewController.navigationItem.leftBarButtonItem = UIBarButtonItem(setHighlightedImgName: "navigationbar_back_withtext", title: title, target:  self, action: #selector(backClick))
        }
        super.pushViewController(viewController, animated: animated)
    }

   // 如果是首页的话 然后用户又向右侧滑动 然后在点击 push 不能完成
    // 默认如果不实现 返回的均为 true
    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
        // 如果. count == 1 就代表你已经到首页了 不能在滑动了
        return childViewControllers.count != 1
    }

}
